Business process management (BPM) systems enable an enterprise to generate formalized workflows for all of the operations within the enterprise. One of the common steps in such workflows is to assign a task to a person (“resource”) in the enterprise. Existing BPM systems perform such task assignments in a very rudimentary manner. For example, when a BPM system is assigning a task to a resource such as a technician, the BPM system may have a group of resources (technicians) to select from. Often the BPM simply adds the task to a list for those resources to choose from. This may be disadvantageous since the technicians will often select easier tasks first and attempt to avoid the more difficult tasks. As a result, higher priority tasks may not be performed in a timely manner if the resources recognize that it will be a harder task to complete.
Alternatively, the BPM system assigns tasks to each resource in the group in a round-robin fashion. That is, the BPM system maintains a list of qualified resources and assigns tasks one at a time starting at the top of the list and continuing to the bottom of the list. Once the bottom of the list is reached the assignment of tasks starts at the top again. This may be disadvantageous since high priority tasks may be assigned to slower resources. Also, some resources may be qualified for many different types of tasks. For example, resource A is able to perform tasks X and Y. Resource B is only able to perform task Y. Resource A may currently have a large workload of X tasks and still have Y tasks being added to their workload. Resource B may have a much smaller workload since resource B can only perform Y tasks. As such, existing BPM systems may create unbalanced workloads for the resources.